#include <iostream>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <cstdlib>
//子进程写，父进程读
int main()
{
    //创建管道
    int fd[2]={0};
    int n=pipe(fd);
    (void)n;
    //创建进程
    pid_t id=fork();
    //各自关闭不需要的读写端
    if(id<0)
    {
        perror("pipe failed !");
        return -1;
    }
    else if(id==0)      //子进程
    {
        //关闭读端
        close(fd[0]);
        int m=0;
        while(m<=10)
        {
            sleep(1);
            char a='A'+m;
            write(fd[1],&a,sizeof(a));
            m++;
        }
        exit(1);
    }
    else //父进程
    {
        //关闭写端
        close(fd[1]);
        int i=0;
        while(i<=10)
        {
            sleep(1);
            char arr[1024]={0};
            int n=read(fd[0],arr,sizeof(arr)-1);  //预留结束的position
            if(n<0)
                return 0;
            arr[n]='\0';
            std::cout<<arr<<std::endl;
            i++;
        }
        pid_t m=waitpid(id,nullptr,0);
        std::cout<<"通讯结束"<<std::endl;
    }
    return 0;
}